/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.nxlv2.nomad.accessdb.services;

import com.nxlv2.nomad.accessdb.dao.IClientDao;
import com.nxlv2.nomad.accessdb.dao.IDemandeDao;
import com.nxlv2.nomad.accessdb.dao.jdbc.JdbcClientDao;
import com.nxlv2.nomad.accessdb.dao.jdbc.JdbcDemandeDao;
import com.nxlv2.nomad.businessobjects.Client;
import com.nxlv2.nomad.businessobjects.Demande;
import com.nxlv2.nomad.businessobjects.DetailDemande;
import java.util.List;

/**
 *
 * @author Administrateur
 */
public class DemandeServices {
    private static final IDemandeDao dao = new JdbcDemandeDao();
    private static final IClientDao daoCl = new JdbcClientDao();
    
    /**
     * 
     * @param demande
     * @param client
     * @throws ServiceException 
     */
    public void create(Demande demande, Client client) throws ServiceException {
        if(demande.getIdAppli() == 0){
            demande.setIdAppli(dao.getNextId());
        }
        dao.saveDemande(demande);
        daoCl.lierDemandeAClient(demande, client);
    }
    
    /**
     * 
     * @param demande
     * @throws ServiceException 
     */
    public void update(Demande demande) throws ServiceException{
        dao.updateDemande(demande);
    }
    
    /**
     * 
     * @param demande
     * @throws ServiceException 
     */
    public void delete(Demande demande) throws ServiceException{
        dao.deleteDemande(demande.getIdAppli());
    }
    
    /**
     * 
     * @param id
     * @return List<Demande>
     * @throws ServiceException 
     */
    public List<Demande> get (int id) throws ServiceException {
        return dao.findDemandesById(id);
    }
    
    /**
     * 
     * @param demande
     * @return List<DetailDemande>
     * @throws ServiceException 
     */
    public List<DetailDemande> getDetailDemandes(Demande demande) throws ServiceException {
        return dao.getDetailDemandesParDemande(demande);
    }
    /**
     * 
     * @param demande
     * @return List<DetailDemande>
     * @throws ServiceException 
     */
    public List<DetailDemande> getDetailDemandesMaj(Demande demande) throws ServiceException {
        return dao.getDetailDemandesMajParDemande(demande);
    }
    
    /**
     * 
     * @param detailDemande
     * @param demande
     * @throws ServiceException 
     */
    public void linkDetailDemande(DetailDemande detailDemande, Demande demande) throws ServiceException{
        dao.lierDetailDemandeADemande(detailDemande, demande);
    }
}
